Fix java tree..(part 2)
[f432xdd.git] / java / Graph Editor / src / interfaces / GraphPanel.java
blob921bb084deb3947f0cb5f34310a0c9b8f9da8f91
1 package interfaces;
2 import java.awt.Color;
3 import java.awt.FontMetrics;
4 import java.awt.Graphics;
5 import java.util.Observable;
6 import java.util.Observer;
8 import javax.swing.*;
10 import controllers.SelectionController;
11 import models.GraphEdge;
12 import models.GraphModel;
13 import models.GraphVertex;
15 public class GraphPanel extends JPanel implements Observer{
16 private static final long serialVersionUID = 1388592199136335514L;
17 private GraphModel model;
18 private SelectionController selectionController;
20 protected GraphPanel(GraphModel model){
21 this.setSize(500, 400);
22 this.setBackground(Color.BLUE);
23 this.model = model;
24 model.addObserver(this);
27 public void setSelectionController(SelectionController controller)
29 this.selectionController = controller;
32 public void setModel(GraphModel model){
33 if(this.model != null){
34 this.model.deleteObserver(this);
36 this.model = model;
37 model.addObserver(this);
38 selectionController.setModel(model);
39 repaint();
42 public GraphModel getModel(){
43 return model;
46 public int getDrawTextWidth(String in)
48 FontMetrics fm = this.getFontMetrics(this.getFont());
49 int width = fm.stringWidth(in);
50 return width;
54 private void fillBackGround(Graphics g){
55 g.setColor(this.getBackground());
56 g.fillRect(0, 0, getWidth(), getHeight());
59 private void drawEdges(Graphics g){
60 GraphEdge[] edges = model.getEdges();
61 g.setColor(Color.cyan);
62 for(int i=0; i < edges.length; i++){
63 GraphEdge edge = edges[i];
64 GraphVertex[] vertexes = edge.getNodes();
65 g.drawLine(vertexes[0].getX() + (vertexes[0].getWidth()/2),
66 vertexes[0].getY() + (vertexes[0].getHeight()/2),
67 vertexes[1].getX() + (vertexes[1].getWidth()/2),
68 vertexes[1].getY() + (vertexes[0].getHeight()/2));
72 private void drawVertexLine(Graphics g)
74 // Draw Adding vertex line if needed
75 if(this.selectionController != null && this.selectionController.isAddingEdge()){
77 g.setColor(Color.red);
78 GraphVertex origen = this.selectionController.getSelectedVertex();
79 g.drawLine( origen.getX() + (origen.getWidth()/2),
80 origen.getY() + (origen.getHeight()/2),
81 selectionController.getMouseX(),selectionController.getMouseY());
85 private void drawVertixes(Graphics g)
87 GraphVertex[] objects = model.getVertexes();
88 for(int i=0; i < objects.length; i++){
89 GraphVertex o = objects[i];
90 g.setColor(Color.white);
91 g.fillRect(o.getX(), o.getY(), o.getWidth(), o.getHeight());
92 if(o.isSelected()){
93 g.setColor(Color.red);
94 }else{
95 g.setColor(Color.black);
97 g.drawRect(o.getX(), o.getY(),o.getWidth(), o.getHeight());
98 g.setColor(Color.black);
99 g.drawString(o.getName(), o.getX()+10, o.getY()+25);
103 public void paintComponent(Graphics g)
105 fillBackGround(g);
106 drawEdges(g);
107 drawVertexLine(g);
108 drawVertixes(g);
111 @Override
112 public void update(Observable arg0, Object arg1) {
113 if(arg0 == model){
114 repaint();